<template>
    <div class="search">
        <el-autocomplete v-model="keyword" @select="goDetil" clearable class="inline-input w-50" placeholder="请输入医院名称"
            :fetch-suggestions="fetchData" :trigger-on-focus="false" />
        <el-button type="primary" size="default" :icon="Search" @click="">搜索</el-button>
    </div>
</template>
<script setup lang="ts">
defineOptions({
    name: "Search",
})
// 引入 element-plus 提供的图标
import { Search } from '@element-plus/icons-vue'
// 引入请求接口
import { reqHospiByKeys } from '@/api/home';
// 引入 ts 类型
import { HospiByKeys } from '@/api/home/type';
// 引入路由器
import { useRouter } from "vue-router";

// 引入组合式 api
import { ref } from "vue"

// 创建关键字（如果不创建会导致文字刚输入完就被清空）
let keyword = ref<string>('');
// 创建路由对象
let $router = useRouter();

// 搜索框组件的回调
const fetchData = async (queryString: string, cb: any) => {
    // 当用户输入完关键字函数会执行一次，发请求获取数据
    let result: HospiByKeys = await reqHospiByKeys(queryString);
    // 整理为组件所需要的结构
    let showData = result.data.map((item) => {
        return {
            // 医院名字
            value: item.hosname,
            // 医院编号
            hoscode: item.hoscode
        }
    })
    // 给组件提供展示所需要的数据
    cb(showData)
}
// 点击某一个推荐项
const goDetil = (item: any) => {
    // 点击推荐项进入到医院详情页
    $router.push({
        path: '/hospital/register',
        query: {
            hoscode: item.hoscode
        }
    });
}

</script>
<style scoped lang="scss">
.search {
    width: 100%;
    height: 50px;
    display: flex;
    /* 主轴居中（默认情况下是横向） */
    justify-content: center;
    /* 竖轴居中 */
    align-items: center;
    margin: 10px 0;

    /* 深度选择器 */
    :deep(.el-input__wrapper) {
        width: 600px;
        margin-right: 10px;
    }
}
</style>